#include <iostream>
#include "lazy.hpp"

// 使用示例
class MyConfig {
public:
    MyConfig() { std::cout << "Config Loaded!" << std::endl; }
    ~MyConfig() { std::cout << "Config Unloaded!" << std::endl; }
    void Show() { std::cout << "Showing Config..." << std::endl; }
};

int main() {
    // 程序启动时已创建实例
    MyConfig& cfg1 = EagerSingleton<MyConfig>::GetInstance();
    cfg1.Show();

    // 后续调用返回同一实例
    MyConfig& cfg2 = EagerSingleton<MyConfig>::GetInstance();
    return 0;
}

// 使用示例
class MyConfig {
public:
    MyConfig() { std::cout << "Config Loaded!" << std::endl; }
    ~MyConfig() { std::cout << "Config Unloaded!" << std::endl; }
    void Show() { std::cout << "Showing Config..." << std::endl; }
};
 
int main() {
    // 程序启动时已创建实例
    MyConfig& cfg1 = EagerSingleton<MyConfig>::GetInstance();
    cfg1.Show();
 
    // 后续调用返回同一实例
    MyConfig& cfg2 = EagerSingleton<MyConfig>::GetInstance();
    return 0;
}